import java.util.*;

class Utensil {
	public void f(long l) {
		System.out.printf("Utensil::f(long l = " + l + ")\n");
	}

	public static void use(Utensil u) {
		System.out.printf("Utensil::use: using utensil " + u + "\n");
	}
}

class Fork extends Utensil {
	public void f(long l) {
		System.out.printf("Fork::");
		super.f(l);
	}

	public void f(String s) {
		System.out.printf("Fork::f(String s = \"" + s + "\")\n");
	}
}

public class Upcasting {
	public static void main(String[] args) {
		Fork fork = new Fork();
		fork.f(1L << 53);
		fork.f(32);
		fork.f("blah");
		fork.use(fork);
	}
}
